<?php
namespace app\index\controller\Option;
/**
 * 组装出
 * http://echarts.baidu.com/examples/index.html。
 * 所需数据类
 */
class Option{
    /**
     *百度 统计图 array
     * @var array $option
     */
    private $option=[];
    /**
     * 统计图标题
     * @param string $title1  大标题
     * @param string $title2  副标题
     * @param string $x       标题显示的样式。位置
     * @return $this
     */
    public function title($title1='统计图',$title2='',$x="center"){
        $this->option['title']=["text"=>$title1,"subtext"=>$title2 , "x"=>$x];
        return $this;
    }
    /**
     * 统计图提示，<b>鼠标移动上去提示</b>用的
     * @param bool $formatter   是否显示所占百分比。只有饼图才可以
     * @param string $trigger   触发显示样式
     * @param array $axisPointer 指向轴坐标样式    默认无需。。。<p>   <b>  ["type"=>"cross","label"=>["backgroundColor"=>"6a7985"]]  </b> <p>
     *  设置为此产生将参数交叉坐标样式，一般是折线图使用
     * @return $this
     */
    public function tooltip($formatter=false,$trigger='axis',$axisPointer=[]){
        $this->option['tooltip']=[
            "trigger"=>$trigger,
            "axisPointer"=>$axisPointer
        ];
        if($formatter){
            $this->option['tooltip']['formatter']="{a} <br/>{b} : {c} ({d}%)";
        }
        return $this;
    }
    /**
     * 生成可关闭单个的点
     * @param array $data       将series 里面的name值作为数组传入。顺序可不一致
     * @param bool $bottom
     * @param string $orient
     * @param string $left      关闭点位置设置
     * @param int $right        距上距的数值
     * @return $this
     */
    public function legend($data=[],$bottom=false,$orient= '',$left='left',$right=0){
        if($bottom){
            $this->option['legend']['bottom']=$bottom;
        }
        if($orient){
            $this->option['legend']=['orient'=>$orient ,"left"=>$left ,"right"=>$right];
        }
        $this->option['legend']['data']=$data;
        return $this;
    }
    /**
     * 
     * @return $this
     */
    public function grid(){
        $this->option['grid']=[
            "left"=>"3%",
            "right"=>"4%",
            "bottom"=>"3%",
            "containLabel"=>true
        ];
        return $this;
    }
    /**
     * Y轴  可以将y当x。。但不建议
     * @param string $value 这个默认为value
     * @return $this
     */
    public function yAxis($value='value'){
        $this->option['yAxis']['type']=$value;
        return $this;
    }
    /**
     * 设置X轴
     * @param array $data    x轴坐标点的名称
     * @param bool $boundaryGap     是否靠着Y轴线。默认为不靠着
     * @param string $type
     * @return $this
     */
    public function xAxis($data,$boundaryGap=true,$type='category'){
        $this->option['xAxis']=[
            "type"=>$type,
            "boundaryGap" => $boundaryGap,
            "data"=>$data,
        ];
        return $this;
    }
    /**
     * 组装好的 series 格式数据
     * @param array $data   数据
     * @return $this
     */
    public function series($data){
        $this->option['series']=$data;
        return $this;
    }
    /**
     * 返回json数据
     * @return json
     */
    public function json(){
        return json_encode($this->option);
    }
    /**
     * 返回array数据
     * @return array
     */
    public function arr(){
        return $this->option;
    }
}

